home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / python2.6 / whichdb.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-11-11  |  2KB  |  116 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Guess which db package to use to open a db file.'''
  5. import os
  6. import struct
  7. import sys
  8.  
  9. try:
  10.     import dbm
  11.     _dbmerror = dbm.error
  12. except ImportError:
  13.     dbm = None
  14.     _dbmerror = IOError
  15.  
  16.  
  17. def whichdb(filename):
  18.     '''Guess which db package to use to open a db file.
  19.  
  20.     Return values:
  21.  
  22.     - None if the database file can\'t be read;
  23.     - empty string if the file can be read but can\'t be recognized
  24.     - the module name (e.g. "dbm" or "gdbm") if recognized.
  25.  
  26.     Importing the given module may still fail, and opening the
  27.     database using that module may still fail.
  28.     '''
  29.     
  30.     try:
  31.         f = open(filename + os.extsep + 'pag', 'rb')
  32.         f.close()
  33.         if not dbm.library == 'GNU gdbm' and sys.platform == 'os2emx':
  34.             f = open(filename + os.extsep + 'dir', 'rb')
  35.             f.close()
  36.         
  37.         return 'dbm'
  38.     except IOError:
  39.         
  40.         try:
  41.             f = open(filename + os.extsep + 'db', 'rb')
  42.             f.close()
  43.             if dbm is not None:
  44.                 d = dbm.open(filename)
  45.                 d.close()
  46.                 return 'dbm'
  47.         except (IOError, _dbmerror):
  48.             pass
  49.         except:
  50.             None<EXCEPTION MATCH>(IOError, _dbmerror)
  51.         
  52.  
  53.         None<EXCEPTION MATCH>(IOError, _dbmerror)
  54.  
  55.     
  56.     try:
  57.         os.stat(filename + os.extsep + 'dat')
  58.         size = os.stat(filename + os.extsep + 'dir').st_size
  59.         if size == 0:
  60.             return 'dumbdbm'
  61.         f = open(filename + os.extsep + 'dir', 'rb')
  62.         
  63.         try:
  64.             if f.read(1) in ("'", '"'):
  65.                 return 'dumbdbm'
  66.         finally:
  67.             f.close()
  68.  
  69.     except (OSError, IOError):
  70.         pass
  71.  
  72.     
  73.     try:
  74.         f = open(filename, 'rb')
  75.     except IOError:
  76.         return None
  77.  
  78.     s16 = f.read(16)
  79.     f.close()
  80.     s = s16[0:4]
  81.     if len(s) != 4:
  82.         return ''
  83.     
  84.     try:
  85.         (magic,) = struct.unpack('=l', s)
  86.     except struct.error:
  87.         len(s) != 4
  88.         len(s) != 4
  89.         return ''
  90.  
  91.     if magic == 324508366:
  92.         return 'gdbm'
  93.     if magic in (398689, 1628767744):
  94.         return 'bsddb185'
  95.     
  96.     try:
  97.         (magic,) = struct.unpack('=l', s16[-4:])
  98.     except struct.error:
  99.         magic in (398689, 1628767744)
  100.         magic in (398689, 1628767744)
  101.         magic == 324508366
  102.         return ''
  103.         len(s) != 4
  104.  
  105.     if magic in (398689, 1628767744):
  106.         return 'dbhash'
  107.     return ''
  108.  
  109. if __name__ == '__main__':
  110.     for filename in sys.argv[1:]:
  111.         if not whichdb(filename):
  112.             pass
  113.         print 'UNKNOWN', filename
  114.     
  115.  
  116.